home *** CD-ROM | disk | FTP | other *** search
- unit CustomColours;
- interface
- uses
- SysUtils, Classes, Graphics, DsgnIntf ;
- const
- clSproog = $00234567 ;
- clFangle = $00765432 ;
- clRelmist = $00767676 ;
- clPogarth = $0012AA21 ;
- Colors : array[ 0..3 ] of integer =
- ( clSproog, clFangle, clRelmist, clPogarth ) ;
- ColorStrings : array[ Low( Colors )..High( Colors ) ] of string =
- ( 'clSproog', 'clFangle', 'clRelmist', 'clPogarth' ) ;
- type
- TMyColorProperty = class( TColorProperty )
- protected
- function GetValue : string ; override ;
- procedure GetValues( Proc : TGetStrProc ) ; override ;
- procedure SetValue( const Value : string ) ; override ;
- end ;
- // replacements for color functions in Graphics.pas
- function ColorToString( Color : TColor ) : string ;
- function StringToColor( const S : string ) : TColor ;
- function ColorToIdent( Color : longint ; var Ident : string ) : boolean ;
- function IdentToColor( const Ident : string ; var Color : longint ) : Boolean ;
- procedure Register ;
- implementation
- function ColorToIdent( Color : longint ; var Ident : string ) : boolean ;
- var i : integer ;
- begin
- for i := Low( Colors ) to High( Colors ) do
- if Color = Colors[ i ] then
- begin
- Ident := ColorStrings[ i ] ;
- Result := true ;
- exit ;
- end ;
- Result := Graphics.ColorToIdent( Color, Ident ) ;
- end ;
- function IdentToColor( const Ident : string ; var Color : longint ) : Boolean ;
- var i : integer ;
- begin
- for i := Low( ColorStrings ) to High( ColorStrings ) do
- if AnsiCompareText( Ident, ColorStrings[ i ] ) = 0 then
- begin
- Color := Colors[ i ] ;
- Result := true ;
- exit ;
- end ;
- Result := Graphics.IdentToColor( Ident, Color ) ;
- end ;
- function ColorToString( Color : TColor ) : string ;
- begin
- if not ColorToIdent( Color, Result ) then
- FmtStr( Result, '$%.8x', [ Color ] ) ;
- end;
- function StringToColor( const S : string ) : TColor ;
- begin
- if not IdentToColor( S, Longint( Result ) ) then
- Result := TColor( StrToInt( S ) ) ;
- end;
- function TMyColorProperty.GetValue : string ;
- begin
- Result := ColorToString( TColor( GetOrdValue ) ) ;
- end;
- procedure TMyColorProperty.GetValues( Proc : TGetStrProc ) ;
- var i : integer ;
- begin
- // add our colours first - call inherited first to have our colours at
- // the end of the list
- for i := Low( ColorStrings ) to High( ColorStrings ) do
- Proc( ColorStrings[ i ] ) ;
- inherited GetValues( Proc ) ;
- end ;
- procedure TMyColorProperty.SetValue( const Value : string ) ;
- var ColorValue : longint ;
- i : integer ;
- begin
- if IdentToColor( Value, ColorValue ) then SetOrdValue( ColorValue )
- else
- inherited SetValue( Value ) ;
- end ;
- procedure Register ;
- begin
- RegisterPropertyEditor( TypeInfo( TColor ), NIL, '', TMyColorProperty ) ;
- end ;
- end.
-